package com.atguigu.principle;

/**
 * @author LYJ
 * @Description Liskov原则
 * @date 2021 年 09 月 08 日 下午5:22
 */
public class Liskov {
    public static void main(String[] args) {
        P p = new P();

        //这里本来想调用Q中的减法,但是由于重写了fun1方法,最终导致调用到的是加法,所以会导致程序的崩溃
        p.fun1(10, 20);
    }
}

//我们将更基础的属性和方法定义在积累中,意思就是不变的
class Base {

}


class Q extends Base {
    public int fun1(int num1, int num2) {
        return num1 - num2;
    }
}

class P extends Base {

    private Q q = new Q();

    public int fun1(int num1, int num2) {
        return this.q.fun1(num1, num2);
    }

    public int fun2(int num1, int num2) {
        return num1 + num2;
    }
}
